package it.apiconsulting.live.view;

import it.apiconsulting.live.controller.CategoriaManager;
import it.apiconsulting.live.controller.ProdottoManager;
import it.apiconsulting.live.controller.SottoCategoriaManager;
import it.apiconsulting.live.model.Categoria;
import it.apiconsulting.live.model.Prodotto;
import it.apiconsulting.live.model.SottoCategoria;

import java.util.List;


public class CategoriaAction extends BaseAction {

	private static final long serialVersionUID = 9149826260758390091L;
	private Categoria categoria;
	private List<Categoria> categorie;
	private String id;

	private CategoriaManager linkCategoriaController;
	private SottoCategoriaManager linkSottoCategoriaController;
	private ProdottoManager linkProdottoController;

	public CategoriaAction() {
		linkCategoriaController = new CategoriaManager();
		linkSottoCategoriaController = new SottoCategoriaManager();
		linkProdottoController = new ProdottoManager();
		function = "Categoria";
	}

	public String execute() {
		this.categorie = linkCategoriaController.list();
		return SUCCESS;
	}

	public String add() {
		try {
			if (getId() != null && !getId().equals("")) {
				if ( linkCategoriaController.getCategoriaById(Long.parseLong(getId())) != null ) {
					getCategoria().setId(Long.parseLong(getId()));
					linkCategoriaController.update(getCategoria());
				}
			}  else linkCategoriaController.add(getCategoria());	
		} catch (Exception e) {
			e.printStackTrace();
		}		
		this.categorie = linkCategoriaController.list();
		return SUCCESS;
	}

	public String delete() {
		List<SottoCategoria> sottoCategorie = linkSottoCategoriaController.listByIdCategoria(Long.parseLong(getId()));
		for (int i = 0; i < sottoCategorie.size(); i++ ) {
			Categoria categoriaNonClassificato = linkCategoriaController.getCategoriaById(new Long(0));
			sottoCategorie.get(i).setCategoriapadre(categoriaNonClassificato.getId());
			sottoCategorie.get(i).setNomecategoriapadre(categoriaNonClassificato.getNome());
			linkSottoCategoriaController.update(sottoCategorie.get(i));
		}
		List<Prodotto> prodotti = linkProdottoController.listByIdCategoria(Long.parseLong(getId()));
		for (int i = 0; i < prodotti.size(); i++ ) {
			Categoria categoriaNonClassificato = linkCategoriaController.getCategoriaById(new Long(0));
			prodotti.get(i).setIdcategoria(categoriaNonClassificato.getId());
			prodotti.get(i).setNomecategoria(categoriaNonClassificato.getNome());
			linkProdottoController.update(prodotti.get(i));
		}
		linkCategoriaController.delete(Long.parseLong(getId()));
		return SUCCESS;
	}
	
	public String edit() {
		setCategoria(linkCategoriaController.getCategoriaById(Long.parseLong(getId())));
		return SUCCESS;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public List<Categoria> getCategorie() {
		return categorie;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public void setCategorie(List<Categoria> categorie) {
		this.categorie = categorie;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}
